package com.altaic.structure ;

import java.util.ArrayList ;

public abstract class AltaicNoun implements IAltaicWord
{
    //generally marks the subject of a verb or the predicate noun or predicate adjective, as opposed to its object or
    //other verb arguments. (Generally, it is a noun that is doing something.)
    public final static String NOUN_CASE_NOMINATIVE = "NOUN_CASE_NOMINATIVE" ;

    //marks direct object
    public final static String NOUN_CASE_ACCUSATIVE = "NOUN_CASE_ACCUSATIVE" ;

    //indicate the noun to whom something is given. For example, in "John gave Mary a book".
    public final static String NOUN_CASE_DATIVE = "NOUN_CASE_DATIVE" ;

    //locative(evde)
    public final static String NOUN_CASE_LOCATIVE = "NOUN_CASE_LOCATIVE" ;

    //ablative(evden)
    public final static String NOUN_CASE_ABLATIVE = "NOUN_CASE_ABLATIVE" ;

    public String[ ] STATES_OF_NOUNS = new String[ ] { NOUN_CASE_ACCUSATIVE, NOUN_CASE_ACCUSATIVE, NOUN_CASE_DATIVE, NOUN_CASE_LOCATIVE, NOUN_CASE_ABLATIVE } ;

    protected String word ;

    protected AltaicNoun possesion ;
    
    protected String state ;

    protected ArrayList<AltaicAdjective> altaicAdjectives = new ArrayList<AltaicAdjective>( ) ;

    public AltaicNoun( String word )
    {
        this.word = word ;
    }

    public String createRender( )
    {
        return null ;
    }

    public void addAdjective( AltaicAdjective altaicAdjective )
    {
        this.altaicAdjectives.add( altaicAdjective ) ;
    }

    public String getNoun( )
    {
        return this.word ;
    }

    public void setNoun( String noun )
    {
        this.word = noun ;
    }

    public AltaicNoun getPossesion( )
    {
        return this.possesion ;
    }

    public void setPossesion( AltaicNoun possesion )
    {
        this.possesion = possesion ;
    }

    public ArrayList<AltaicAdjective> getAltaicAdjectives( )
    {
        return this.altaicAdjectives ;
    }

    public void setAltaicAdjectives( ArrayList<AltaicAdjective> altaicAdjectives )
    {
        this.altaicAdjectives = altaicAdjectives ;
    }

    public String getWord( )
    {
        return this.word ;
    }

    public void setWord( String word )
    {
        this.word = word ;
    }

    public String getState( )
    {
        return this.state ;
    }

    public void setState( String state )
    {
        this.state = state ;
    }

}
